home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / somethingstrange.s < prev    next >
Text File  |  1997-01-31  |  4KB  |  190 lines

  1. ;this program uses the task oriented ctp routine to display
  2. ;a simple picture.
  3.  
  4.     include    "workbench:utilities/devpac/system.gs"
  5.     
  6. scrwid    EQU    192
  7. scrht    EQU    160
  8.     ;first open a screen and allocate a chunky buffer
  9.     move.l    4.w,a6
  10.     move.l    #INTUINAME,a1
  11.     move.l    #36,d0
  12.     jsr    _LVOOpenLibrary(a6)
  13.     move.l    d0,INTUIBASE
  14.     beq    nointui
  15.     
  16.     move.l    4.w,a6
  17.     move.l    #GFXNAME,a1
  18.     move.l    #36,d0
  19.     jsr    _LVOOpenLibrary(a6)
  20.     move.l    d0,GFXBASE
  21.     beq    nogfx
  22.     
  23.     move.l    #0,a0
  24.     move.l    #MYSCREENTAGS,a1
  25.     move.l    INTUIBASE,a6
  26.     jsr    _LVOOpenScreenTagList(a6)
  27.     move.l    d0,SCREENBASE
  28.     beq    noscreen
  29.     
  30.     move.l    4.w,a6
  31.     move.l    #scrwid*scrht,d0
  32.     move.l    #0,d1            ;best possible memory
  33.     jsr    _LVOAllocMem(a6)
  34.     move.l    d0,CHUNKYBUFFER
  35.     beq    nochunky
  36.     
  37.     move.l    #scrwid*scrht,d0
  38.     move.l    #0,d1            ;best possible memory
  39.     jsr    _LVOAllocMem(a6)
  40.     move.l    d0,CHUNKYCOMPARE
  41.     beq    nochunkycomp
  42.     
  43.     move.l    #scrwid*scrht,d0
  44.     move.l    #MEMF_CHIP,d1
  45.     jsr    _LVOAllocMem(a6)
  46.     move.l    d0,CHIPBUF1
  47.     beq    nochipbuf1
  48.     
  49.     move.l    #scrwid*scrht,d0
  50.     move.l    #MEMF_CHIP,d1
  51.     jsr    _LVOAllocMem(a6)
  52.     move.l    d0,CHIPBUF2
  53.     beq    nochipbuf2
  54.     
  55.     move.l    4.w,a6
  56.     move.l    #-1,d0
  57.     jsr    _LVOAllocSignal(a6)
  58.     move.l    d0,SIG1
  59.     blt    nosig1
  60.  
  61.     move.l    4.w,a6
  62.     move.l    #-1,d0
  63.     jsr    _LVOAllocSignal(a6)
  64.     move.l    d0,SIG2
  65.     blt    nosig2
  66.     
  67.     ;set the signals to say that the previous ctp conversion
  68.     ;has been completed
  69.     move.l    4.w,a6
  70.     move.l    SIG1,d0
  71.     or.l    SIG2,d0
  72.     move.l    d0,d1
  73.     jsr    _LVOSetSignal(a6)
  74.     
  75.     ;initialise ctp routine
  76.     move.l    CHUNKYBUFFER,a0        ;chunky buffer
  77.     move.l    CHUNKYCOMPARE,a1    ;chunky compare buffer
  78.     move.l    SCREENBASE,a2
  79.     lea    sc_BitMap(a2),a2
  80.     lea    bm_Planes(a2),a2    ;plane pointer
  81.     move.l    GFXBASE,a3
  82.     move.l    #1,d0            ;signals1
  83.     move.l    #2,d1            ;signals2
  84.     move.l    #scrwid*scrht,d2    ;number of pixels
  85.     move.l    #0,d3            ;byte offset
  86.     move.l    CHIPBUF1,d4
  87.     move.l    CHIPBUF2,d5
  88.     jsr    _c2p8_init
  89.     
  90. notzerozero:
  91.     move.w    YPOS,d0
  92.     mulu.w    #scrwid,d0
  93.     add.w    XPOS,d0
  94.     move.l    CHUNKYBUFFER,a0
  95.     add.b    #1,(a0,d0.w)
  96.     move.w    XPOS,d0
  97.     add.w    #1,d0
  98.     cmp.w    #scrwid,d0
  99.     blt.s    notoffright
  100.     move.w    #0,d0
  101.     move.w    YPOS,d1
  102.     add.w    #1,d1
  103.     cmp.w    #scrht,d1
  104.     blt.s    notoffbottom
  105.     move.w    #0,d1
  106. notoffbottom:
  107.     move.w    d1,YPOS
  108. notoffright:
  109.     move.w    d0,XPOS
  110.     
  111.     move.l    GFXBASE,a6
  112.     jsr    _LVOWaitTOF(a6)
  113.     jsr    _c2p8_go
  114.     move.w    #$f00,$dff180
  115.     
  116.     move.l    SCREENBASE,a0
  117.     move.w    sc_MouseX(a0),d0
  118.     bne.s    notzerozero
  119.     move.w    sc_MouseY(a0),d0
  120.     bne.s    notzerozero
  121.     
  122.     move.l    4.w,a6
  123.     move.l    SIG2,d0
  124.     jsr    _LVOFreeSignal(a6)
  125. nosig2:
  126.     move.l    4.w,a6
  127.     move.l    SIG1,d0
  128.     jsr    _LVOFreeSignal(a6)
  129. nosig1:
  130.     move.l    CHIPBUF2,a1
  131.     move.l    #scrwid*scrht/8,d0
  132.     move.l    4.w,a6
  133.     jsr    _LVOFreeMem(a6)
  134. nochipbuf2:
  135.     move.l    CHIPBUF1,a1
  136.     move.l    #scrwid*scrht/8,d0
  137.     move.l    4.w,a6
  138.     jsr    _LVOFreeMem(a6)
  139. nochipbuf1:
  140.     move.l    CHUNKYCOMPARE,a1
  141.     move.l    #scrwid*scrht/8,d0
  142.     move.l    4.w,a6
  143.     jsr    _LVOFreeMem(a6)
  144. nochunkycomp:
  145.     move.l    CHUNKYBUFFER,a1
  146.     move.l    #scrwid*scrht/8,d0
  147.     move.l    4.w,a6
  148.     jsr    _LVOFreeMem(a6)
  149. nochunky:
  150.     move.l    SCREENBASE,a0
  151.     move.l    INTUIBASE,a6
  152.     jsr    _LVOCloseScreen(a6)
  153. noscreen:
  154.     move.l    GFXBASE,a1
  155.     move.l    4.w,a6
  156.     jsr    _LVOCloseLibrary(a6)
  157. nogfx:
  158.     move.l    INTUIBASE,a1
  159.     move.l    4.w,a6
  160.     jsr    _LVOCloseLibrary(a6)
  161. nointui:
  162.     rts
  163.  
  164. INTUIBASE:    dc.l    0
  165. GFXBASE:    dc.l    0
  166. SIG1:        dc.l    0
  167. SIG2:        dc.l    0
  168. INTUINAME:    dc.b    "intuition.library",0
  169. GFXNAME:    dc.b    "graphics.library",0
  170.     even
  171. MYSCREENTAGS:
  172.     dc.l    SA_Width,scrwid
  173.     dc.l    SA_Height,scrht
  174.     dc.l    SA_Depth,8
  175. ;    dc.l    SA_DisplayID
  176. ;    dc.l    LORES_KEY
  177.     dc.l    SA_Quiet,-1
  178.     dc.l    SA_AutoScroll,-1
  179.     dc.l    -1,-1
  180. SCREENBASE:    dc.l    0
  181. CHUNKYBUFFER:    dc.l    0
  182. CHUNKYCOMPARE:    dc.l    0
  183. CHIPBUF1:    dc.l    0
  184. CHIPBUF2:    dc.l    0
  185. XPOS:        dc.w    0
  186. YPOS:        dc.w    0
  187.  
  188.     even
  189.     include    "ab3:source_4000/somethingstrange2.s"
  190.